package com.kukudexin;

/**
 * @author: 酷酷的鑫
 * @Date: 2021/12/8 17:37
 * @description:
 */
public class Test14 {
    public static void main(String[] args) {
        GenericConstructor obj1 = new GenericConstructor(456);
        obj1.showValue();

        GenericConstructor obj2 = new GenericConstructor(Double.valueOf("3.14"));   //构造方法的实参是Double对象, 推断出泛型构造方法中的T参数 是Double类型
        obj2.showValue();

        //显示的指定构造方法的参数类型
        GenericConstructor obj3 = new <Byte> GenericConstructor(Byte.valueOf("69"));
        obj3.showValue();
    }
}

//定义类,在类中定义泛型构造方法
class  GenericConstructor {
    private double value;

    //在构造方法中定义泛型参数,要求类型是Number类的子类
    <T extends Number> GenericConstructor(T arg) {
        value = arg.doubleValue();
    }

    public void showValue() {
        System.out.println("value = " + value);
    }
}